Socket Address এবং Structure

Computer Programming - ইউনিক্স সকেট (Unix Socket) Socket Programming এর মূল ধারণা (Basic Concepts of Socket Programming) |
296
296

Socket Address এবং Structure হলো Socket Programming-এর একটি গুরুত্বপূর্ণ অংশ, যা সঠিকভাবে ক্লায়েন্ট এবং সার্ভারের মধ্যে যোগাযোগ স্থাপনের জন্য প্রয়োজনীয়। Socket Address সাধারণত IP Address এবং Port Number-এর সমন্বয়ে গঠিত, যা নির্দিষ্ট ডিভাইস এবং পরিষেবার সাথে সংযোগ স্থাপন করতে সহায়ক হয়। Unix সিস্টেমে সঠিক Socket Address এবং Structure ব্যবহার করে বিভিন্ন প্রোটোকল, যেমন TCP এবং UDP, এর মাধ্যমে যোগাযোগ করা হয়।

১. Socket Address

Socket Address হলো IP Address এবং Port Number-এর একটি কম্বিনেশন, যা একটি নির্দিষ্ট নেটওয়ার্ক ডিভাইস এবং পরিষেবাকে চিহ্নিত করে। এটি সঠিক ডিভাইস বা সার্ভারের সাথে সংযোগ স্থাপনের জন্য প্রয়োজনীয় এবং এটি নিম্নলিখিত উপাদানগুলো নিয়ে গঠিত:

  • IP Address: এটি একটি ইউনিক অ্যাড্রেস, যা নেটওয়ার্কে থাকা প্রতিটি ডিভাইসকে চিহ্নিত করে। IP Address সাধারণত IPv4 (যেমন 192.168.1.1) বা IPv6 (যেমন 2001:0db8:85a3:0000:0000:8a2e:0370:7334) ফরম্যাটে থাকে।
  • Port Number: এটি একটি নির্দিষ্ট পরিষেবা বা অ্যাপ্লিকেশনকে চিহ্নিত করার জন্য ব্যবহৃত হয়। উদাহরণস্বরূপ, HTTP সার্ভিসের জন্য 80 নম্বর পোর্ট এবং HTTPS-এর জন্য 443 নম্বর পোর্ট ব্যবহৃত হয়। IP Address এবং Port Number একসাথে একটি নির্দিষ্ট Socket তৈরি করে, যা ডেটা পাঠানোর এবং গ্রহণ করার জন্য ব্যবহৃত হয়।

২. Socket Structure

Socket Structure বা ডাটা স্ট্রাকচার হলো একটি নির্দিষ্ট ফরম্যাট, যা Socket Address ধারণ করে এবং সঠিকভাবে নেটওয়ার্ক প্রোটোকল অনুযায়ী কাজ করে। Unix সিস্টেমে Socket Structure সাধারণত sockaddr নামে পরিচিত এবং এটি বিভিন্ন প্রোটোকল অনুযায়ী ভিন্ন হতে পারে। নিচে এর দুটি প্রধান প্রকার আলোচনা করা হলো:

a) sockaddr Structure

sockaddr একটি জেনেরিক ডাটা স্ট্রাকচার, যা বিভিন্ন ধরনের Socket Address ধারণ করে। এটি সাধারণত নিম্নলিখিত ফিল্ডগুলো নিয়ে গঠিত:

  • sa_family: এটি একটি sa_family_t টাইপের ফিল্ড, যা Socket-এর ঠিকানার পরিবার (Address Family) নির্দেশ করে, যেমন AF_INET (IPv4), AF_INET6 (IPv6), বা AF_UNIX (Unix Domain Socket)।
  • sa_data: এটি Socket Address-এর বাকি অংশ ধারণ করে, যা মূলত IP Address এবং Port Number ধারণ করতে পারে। 
struct sockaddr {
   sa_family_t sa_family;  // Address family (e.g., AF_INET, AF_INET6)
   char sa_data[14];       // Address data (IP address and port number)
};

 

sockaddr একটি জেনেরিক স্ট্রাকচার হওয়ায়, এটি সরাসরি ব্যবহার করা হয় না। পরিবর্তে, প্রোটোকল অনুযায়ী নির্দিষ্ট স্ট্রাকচার ব্যবহার করা হয়, যেমন sockaddr_in IPv4-র জন্য এবং sockaddr_in6 IPv6-র জন্য।

b) sockaddr_in Structure (IPv4)

sockaddr_in হলো IPv4 ঠিকানার জন্য নির্দিষ্ট ডাটা স্ট্রাকচার, যা sockaddr থেকে উদ্ভূত। এটি IP Address এবং Port Number-কে একটি নির্দিষ্ট ফরম্যাটে ধারণ করে।

struct sockaddr_in {
   short int sin_family;       // Address family (AF_INET for IPv4)
   unsigned short int sin_port;// Port number (use htons() to set)
   struct in_addr sin_addr;    // IP address (use inet_addr() or similar to set)
   char sin_zero[8];           // Padding to make the structure the same size as sockaddr
};
  • sin_family: এটি সোকেট অ্যাড্রেসের পরিবার নির্দেশ করে, যেমন AF_INET (IPv4)।
  • sin_port: এটি পোর্ট নম্বর ধারণ করে। এটি htons() ফাংশন ব্যবহার করে নেটওয়ার্ক অর্ডারে সেট করা হয়।
  • sin_addr: এটি IP Address ধারণ করে। সাধারণত inet_addr() ফাংশন বা inet_aton() ফাংশন ব্যবহার করে সেট করা হয়।
  • sin_zero: এটি একটি প্যাডিং ফিল্ড, যা স্ট্রাকচারের আকার ঠিক রাখতে ব্যবহৃত হয়।

c) sockaddr_in6 Structure (IPv6)

IPv6 ঠিকানার জন্য sockaddr_in6 স্ট্রাকচার ব্যবহার করা হয়, যা IPv6 অ্যাড্রেস ধারণ করে। এটি নিম্নরূপ:

struct sockaddr_in6 {
   sa_family_t     sin6_family;   // Address family (AF_INET6 for IPv6)
   in_port_t       sin6_port;     // Port number (use htons() to set)
   uint32_t        sin6_flowinfo; // IPv6 flow information
   struct in6_addr sin6_addr;     // IPv6 address
   uint32_t        sin6_scope_id; // Scope ID (like an interface index)
};
sin6_family: এটি সোকেট অ্যাড্রেসের পরিবার নির্দেশ করে, যেমন AF_INET6 (IPv6)।
  • sin6_port: এটি পোর্ট নম্বর ধারণ করে।
  • sin6_addr: এটি একটি IPv6 অ্যাড্রেস ধারণ করে।
  • sin6_scope_id: এটি ইন্টারফেস আইডেন্টিফায়ার বা স্কোপ আইডি ধারণ করে, যা নির্দিষ্ট নেটওয়ার্ক ইন্টারফেসের জন্য ব্যবহৃত হয়।

৩. Unix Domain Socket Structure

Unix Domain Sockets (UDS) এর জন্য sockaddr_un স্ট্রাকচার ব্যবহার করা হয়, যা লোকাল ফাইল সিস্টেমে সোকেট ফাইল চিহ্নিত করতে সহায়ক।

struct sockaddr_un {
   sa_family_t sun_family;    // Address family (AF_UNIX)
   char sun_path[108];        // Path to the socket file
};


 

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion